package com.controladores.controlvehicular;

import com.controladores.controlvehicular.R;
import com.controladores.controlvehicular.comunicacion.ComunicacionTCP;
import com.controladores.controlvehicular.estructura.RegistroMulta;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import com.controladores.controlvehicular.basededatos.GestorBaseDatos;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Clase para la interfaz de registro de infracción 
 * @author Luis Soto <lsantoniosoto@gmail.com>
 * @author Mariuxi Salinas <mariuxidelcisne@gmail.com>
 * @version 1.0, 11/04/2014
 */
public class RegistrarMulta extends Activity implements
		android.view.View.OnClickListener {
	protected TextView etiquetaMulta;
	static final int fotografia = 0;
	private Button botonCargarCodigoMulta, botonCargarTipoMulta;
	private static final int solicitudCamara = 1;
	private String codigoMulta = "", descripcionMulta = "", nombreCliente = "",
			montoMulta = "";
	private EditText cajaCodigoMulta, cajaNombreCliente;
	private TextView etiquetaMontoMulta;
	private int numeroEspacioDiscapacitado,numeroEspacioRegistroSistema, idMultaAusenciaRegistroDiscapacitado;
	private String idMultaM = "", idServidor = "";
	private String nombreControladorInformacion, nombreZonaInformacion,
			idSubCalleInformacion, placaInformacion, colorInformacion,
			marcaInformacion, horaControlInformacion, fechaInformacion,
			descripcionInformacion;
	private String nombreControladorDiscapacitado, nombreZonaDiscapacitado, idSubCalleDiscapacitado, placaDiscapacitado,
			colorDiscapacitado, marcaDiscapacitado, horaControlDiscapacitado, fechaDiscapacitado,
			multaSistemaDiscapacitado;
	private String montoMultaCaducidad;
	private String registroTipoMulta, multaTipoMulta, tipoMultaTiempo;
	private int espacioTipoTiempo = 0;
	private int cNunEspacio;
	private String cUsuario, cNumZona, cIdSubcalle, cPlaca, cMarca, cColor,
			cHoraControl, cFecha, cControlador;
	String codigo;
	private String photoPath = "";
	private RegistroMulta registroMulta;
	private Button botonGuardar, botonCancelar;
	private Typeface tipofuenteMulta;
	private GestorBaseDatos miBBDDHelper;
	private String mac="";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_registrar_multa);
		inicializarComponentes();
		inicializarAccionesDeComponentes();
		cargarMultas();
	}
/**
 * Inicializa los componentes de la interfaz
 */
	private void inicializarComponentes() {
		botonCargarTipoMulta = (Button) findViewById(R.id.btnTiposMulta);
		cajaCodigoMulta = (EditText) findViewById(R.id.id_codigoMulta);
		etiquetaMontoMulta = (TextView) findViewById(R.id.edmonto);
		cajaNombreCliente = (EditText) findViewById(R.id.edNombreP);
		botonCargarCodigoMulta = (Button) findViewById(R.id.btnCargarCodigoMulta);
		botonGuardar = (Button) findViewById(R.id.btnSalirHorario);
		botonCancelar = (Button) findViewById(R.id.btnCancelarInfo);
		etiquetaMulta = (TextView) findViewById(R.id.tMulta);
		tipofuenteMulta = Typeface.createFromAsset(getAssets(),"RobotoCondensedRegular.ttf");
		etiquetaMulta.setTypeface(tipofuenteMulta);
	}
	/**
	 * Inicializa los eventos de los componentes
	 */
	private void inicializarAccionesDeComponentes() {
		botonGuardar.setOnClickListener(this);
		botonCancelar.setOnClickListener(this);
		botonCargarCodigoMulta.setOnClickListener(this);
		botonCargarTipoMulta.setOnClickListener(this);
	}

	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		if (view.equals(botonGuardar)) {
			confirmacionInformacionEnvioMulta();
		}
		if (view.equals(botonCancelar)) {
			cancelar();
		}
		if (view.equals(botonCargarCodigoMulta)) {
			Intent intent = new Intent("com.google.zxing.client.android.SCAN");
			intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
			startActivityForResult(intent, 0);
		}
		if (view.equals(botonCargarTipoMulta)) {
			dialogoTiposInfracion();
		}
		switch (view.getId()) {
		case R.id.btnTiposMulta:

			break;
		}
	}
	/**
	 * Guarda los datos de la infracción
	 */
	private void guardarMultaControlador() {

		if (comprobarGuardarValido()) {
			// El formulario es valido, por lo tanto podemos guardar
			boolean bienHecho = false;
			try {
				codigoMulta = cajaCodigoMulta.getText().toString();
				descripcionMulta = botonCargarTipoMulta.getText().toString();
				System.err.println("descripcion multa controlador "+descripcionMulta);
				nombreCliente = cajaNombreCliente.getText().toString();
				montoMulta = etiquetaMontoMulta.getText().toString();
				crearBBDD();
				miBBDDHelper.abrirBaseDatos();
				idMultaM = miBBDDHelper.traerIdMulta(descripcionMulta);
				// Cerramos la conexion
				miBBDDHelper.close();
				try {
					registroMulta = new RegistroMulta();
					registroMulta.setNombreControlador(cUsuario);
					registroMulta.setNombreZona(cNumZona);
					registroMulta.setIdSubCalle(Integer.parseInt(cIdSubcalle));
					registroMulta.setNumeroEspacio(cNunEspacio);
					registroMulta.setFecha(cFecha);
					registroMulta.setHora(cHoraControl);
					registroMulta.setPlaca(cPlaca);
					registroMulta.setCodigo(codigoMulta);
					registroMulta.setNombreInfractor(nombreCliente);
					registroMulta.setInfraccion(descripcionMulta);
					registroMulta
							.setIdMultaServidor(Integer.parseInt(idMultaM));
					registroMulta.setMonto(Double.parseDouble(montoMulta));
					registroMulta.setColor(cColor);
					registroMulta.setMarca(cMarca);
					GestorBaseDatos manejador = new GestorBaseDatos(RegistrarMulta.this);
					try {
						manejador.abrirBaseDatos();
						mac=manejador.obtenerMac();
						manejador.close();
					} catch (Exception e) {
						
					}
					String valor = "";
					ComunicacionTCP comunicacion = new ComunicacionTCP();
					valor = comunicacion.gestionarConexionEnviarMulta(registroMulta,mac);
					if (valor.compareToIgnoreCase("e") == 0) {
						mostrarMensaje("Algo ha ido mal en la comunicación. Los datos se guardaron localmente para su posterior sicronización");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(0);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("1") == 0) {
						mostrarMensaje("Los datos se enviaron correctamente ");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(1);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("0") == 0) {
						mostrarMensaje("Revisar Código de Multa");
						menuCodigoIncorrecto(codigoMulta);
						// aumentar resaltacion
						cajaCodigoMulta.getBackground()
								.setColorFilter(R.drawable.caja_error,
										PorterDuff.Mode.MULTIPLY);

					}
				} catch (Exception e) {
					// TODO: handle exception
				}
				codigoMulta = "";
				descripcionMulta = "";
				nombreCliente = "";
				montoMulta = "";
			} catch (Exception ex) {
				// Algo ha ido mal, capturamos la excepcion
				bienHecho = false;
			}
			if (!bienHecho)
				mostrarMensaje("Los datos no se han guardado.");
		} else {
			// El formulario no es valido, no podemos guardar, mostramos un
			// mensaje al usuario
			mostrarMensaje("Rellena todos los campos antes de guardar.");
		}

	}

	private void guardarMultasSistMulta() {

		if (comprobarGuardarValido()) {
			// El formulario es valido, por lo tanto podemos guardar
			boolean bienHecho = false;
			try {
				codigoMulta = cajaCodigoMulta.getText().toString();
				descripcionMulta = botonCargarTipoMulta.getText().toString();
				nombreCliente = cajaNombreCliente.getText().toString();
				montoMulta = etiquetaMontoMulta.getText().toString();

				crearBBDD();
				// Abrimos una conexion
				String razon = "Uso indebido de tarjeta";
				miBBDDHelper.abrirBaseDatos();
				idMultaM = miBBDDHelper.traerIdMulta(razon);
				miBBDDHelper.close();
				try {
					registroMulta = new RegistroMulta();
					registroMulta
							.setNombreControlador(nombreControladorInformacion);
					registroMulta.setNombreZona(nombreZonaInformacion);
					registroMulta.setIdSubCalle(Integer
							.parseInt(idSubCalleInformacion));
					registroMulta.setNumeroEspacio(numeroEspacioRegistroSistema);
					registroMulta.setFecha(fechaInformacion);
					registroMulta.setHora(horaControlInformacion);
					registroMulta.setPlaca(placaInformacion);
					registroMulta.setCodigo(codigoMulta);
					registroMulta.setNombreInfractor(nombreCliente);
					registroMulta.setInfraccion(razon);
					registroMulta
							.setIdMultaServidor(Integer.parseInt(idMultaM));
					registroMulta.setMonto(Double.parseDouble(montoMulta));

					registroMulta.setColor(colorInformacion);
					registroMulta.setMarca(marcaInformacion);
					String valor = "";
					GestorBaseDatos manejadorMac = new GestorBaseDatos(RegistrarMulta.this);
					try {
						manejadorMac.abrirBaseDatos();
						mac=manejadorMac.obtenerMac();
						manejadorMac.close();
					} catch (Exception e) {
						
					}
					ComunicacionTCP comunicacion = new ComunicacionTCP();
					valor = comunicacion
							.gestionarConexionRegistroMultaSistTarjeta(
									registroMulta,mac);
					
					if (valor.compareToIgnoreCase("e") == 0) {
						mostrarMensaje("Algo ha ido mal en la comunicación. Los datos se guardaron localmente para su posterior sicronización");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(1);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("1") == 0) {
						mostrarMensaje("Los datos se enviaron correctamente");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(1);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("0") == 0) {
						mostrarMensaje("Revisar Código de Multa");
						menuCodigoIncorrecto(codigoMulta);
						// aumentar resaltacion
						cajaCodigoMulta.getBackground()
								.setColorFilter(R.drawable.caja_error,
										PorterDuff.Mode.MULTIPLY);

					}
				} catch (Exception e) {
					// TODO: handle exception
				}

			} catch (Exception ex) {
				// Algo ha ido mal, capturamos la excepcion
				bienHecho = false;
			}

			if (!bienHecho)
				mostrarMensaje("Los datos no se han guardado.");
		} else {
			// El formulario no es valido, no podemos guardar, mostramos un
			// mensaje al usuario
			mostrarMensaje("Rellena todos los campos antes de guardar.");
		}
	}

	private void guardarMultasSistTiempo() {

		if (comprobarGuardarValido()) {
			// El formulario es valido, por lo tanto podemos guardar
			boolean bienHecho = false;
			String nomControlador = "";
			String nomZona = "";
			String idSub = "";
			String placa = "";
			String horaMulta = "";
			String fecha = "";
			String color = "";
			try {
				codigoMulta = cajaCodigoMulta.getText().toString();
				descripcionMulta = botonCargarTipoMulta.getText().toString();
				nombreCliente = cajaNombreCliente.getText().toString();
				montoMulta = etiquetaMontoMulta.getText().toString();
				String marca;

				crearBBDD();
				// Abrimos una conexion

				miBBDDHelper.abrirBaseDatos();
				//System.err.println("espaciotipo tiempo  "+espacioTipoTiempo);
				nomControlador = miBBDDHelper
						.obtenernombreControlador(espacioTipoTiempo);

				nomZona = miBBDDHelper.obtenernombreZona(espacioTipoTiempo);

				idSub = miBBDDHelper.obtenerIdSub(espacioTipoTiempo);

				placa = miBBDDHelper.obtenerPlaca(espacioTipoTiempo);

				Calendar c = Calendar.getInstance();
				horaMulta = c.get(Calendar.HOUR_OF_DAY) + ":"
						+ c.get(Calendar.MINUTE);

				fecha = miBBDDHelper.obtenerFecha(espacioTipoTiempo);

				color = miBBDDHelper.obtenerColor(espacioTipoTiempo);

				marca = miBBDDHelper.obtenerMarca(espacioTipoTiempo);

				idMultaM = miBBDDHelper.traerIdMulta(descripcionMulta);
				miBBDDHelper.close();
				registroMulta = new RegistroMulta();
				registroMulta.setNombreControlador(nomControlador);
				registroMulta.setNombreZona(nomZona);
				registroMulta.setIdSubCalle(Integer.parseInt(idSub));
				registroMulta.setNumeroEspacio(espacioTipoTiempo);
				registroMulta.setFecha(fecha);
				registroMulta.setHora(horaMulta);
				registroMulta.setPlaca(placa);
				registroMulta.setCodigo(codigoMulta);
				registroMulta.setNombreInfractor(nombreCliente);
				registroMulta.setInfraccion(descripcionMulta);
				registroMulta.setIdMultaServidor(Integer.parseInt(idMultaM));
				registroMulta.setMonto(Double.parseDouble(montoMulta));

				registroMulta.setColor(color);
				registroMulta.setMarca(marca);
				GestorBaseDatos manejadorMac = new GestorBaseDatos(RegistrarMulta.this);
				try {
					manejadorMac.abrirBaseDatos();
					mac=manejadorMac.obtenerMac();
					manejadorMac.close();
				} catch (Exception e) {
					
				}
				try {

					String valor = "";
					ComunicacionTCP comunicacion = new ComunicacionTCP();
					valor = comunicacion.gestionarConexionEnviarMulta(registroMulta,mac);

					if (valor.compareToIgnoreCase("e") == 0) {
						mostrarMensaje("Algo ha ido mal en la comunicación. Los datos se guardaron localmente para su posterior sicronización");
						registroMulta.setEstadoEnvio(0);
						miBBDDHelper.abrirBaseDatos();
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						try {
							GestorBaseDatos manejador = new GestorBaseDatos(
									RegistrarMulta.this);
							manejador.abrirBaseDatos();
							manejador
									.eliminarRegistroTarjeta(espacioTipoTiempo);
							manejador.close();
						} catch (Exception e) {
							// TODO: handle exception
						}
						ZonaTrabajo1
								.detenerServicioDetalleVehiculo(espacioTipoTiempo);
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("1") == 0) {
						mostrarMensaje("Los datos se enviaron correctamente");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(1);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						try {
							GestorBaseDatos manejador = new GestorBaseDatos(
									RegistrarMulta.this);
							manejador.abrirBaseDatos();
							manejador
									.eliminarRegistroTarjeta(espacioTipoTiempo);
							manejador.close();
						} catch (Exception e) {
							// TODO: handle exception
						}
						ZonaTrabajo1
								.detenerServicioDetalleVehiculo(espacioTipoTiempo);
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("0") == 0) {
						mostrarMensaje("Revisar Código de Multa");
						menuCodigoIncorrecto(codigoMulta);
						// aumentar resaltacion
						cajaCodigoMulta.getBackground()
								.setColorFilter(R.drawable.caja_error,
										PorterDuff.Mode.MULTIPLY);

					}
				} catch (Exception e) {
					// TODO: handle exception
				}

			} catch (Exception ex) {
				// Algo ha ido mal, capturamos la excepcion
				bienHecho = false;
			}
			// enviarMulta(nomControlador, nomZona, idSub, fecha, horaMulta,
			// etiquetaPlaca, codigoMulta, nombreCliente, idServidor);

			if (!bienHecho)
				mostrarMensaje("Los datos no se han guardado.");
		} else {
			// El formulario no es valido, no podemos guardar, mostramos un
			// mensaje al usuario
			mostrarMensaje("Rellena todos los campos antes de guardar.");
		}
	}

	public void crearBBDD() {
		miBBDDHelper = new GestorBaseDatos(this);
		try {
			miBBDDHelper.crearDataBase();
		} catch (IOException ioe) {
			throw new Error("Unable to create database");
		}
	}
	/**
	 * Cancela la interfaz
	 */
	private void cancelar() {
		this.finish();
	}
/**
 * Comprueba si las cajas de texto obligatorias son ingresadas
 * @return Boolean  verdadero o falso  
 */
	private boolean comprobarGuardarValido() {
		Boolean guardarEsValido = false; // empezamos suponiendo que es falso

		// Comprobamos las cajas existen
		if (cajaCodigoMulta != null) {
			// Comprobamos que el usuario ha escrito algo en ambas
			if (cajaCodigoMulta.getText() != null
					&& !cajaCodigoMulta.getText().toString().equals("")) {
				// Titulo tiene algo, comprobamos tambien Autor
				guardarEsValido = true;
			}

		}

		return guardarEsValido;

	}
/**
 * Muestra mensaje en la interfaz 
 * @param mensaje Mensaje que aparece en la interfaz
 */
	private void mostrarMensaje(String mensaje) {
		Toast.makeText(this, mensaje, 5000).show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_multas, menu);
		return true;

	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub

		switch (item.getItemId()) {

		case R.id.menu_Foto:
			// protected Uri imageUri;
			codigo = cajaCodigoMulta.getText().toString();
			if (codigo.compareTo("") != 0) {
				String state = Environment.getExternalStorageState();
				if (Environment.MEDIA_MOUNTED.equals(state)) {
					long captureTime = System.currentTimeMillis();
					photoPath = Environment.getExternalStorageDirectory()
							+ "/DCIM/Camera/" + codigo + ".jpg";
					try {
						Intent intent = new Intent(
								"android.media.action.IMAGE_CAPTURE");
						File photo = new File(photoPath);
						intent.putExtra(MediaStore.EXTRA_OUTPUT,
								Uri.fromFile(photo));
						startActivityForResult(
								Intent.createChooser(intent, "Capture Image"),
								solicitudCamara);
						
					} catch (Exception e) {
						Toast.makeText(getApplicationContext(), "Error",
								Toast.LENGTH_LONG).show();
						Log.e(e.getClass().getName(), e.getMessage(), e);
					}
				}
			} else {
				Toast.makeText(getApplicationContext(),
						"Selecione por favor el código de Recarga",
						Toast.LENGTH_LONG).show();
			}

			break;
		// case R.id.menu_Foto:

		}
		return super.onOptionsItemSelected(item);

	}
	/**
	 * Muestra un diálogo de información cuando el código de infracción es incorrecto
	 * @param codigoMulta Código de la infracción
	 */
	private void menuCodigoIncorrecto(String codigoMulta) {
		AlertDialog selecRegistro = new AlertDialog.Builder(RegistrarMulta.this)
				.create();
		selecRegistro.setTitle("Código Incorrecto");
		selecRegistro.setMessage("Ya existe una multa con el código ingresado "
				+ codigoMulta + ". Revise e intente de nuevo");
		selecRegistro.setButton("Aceptar",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						dialog.cancel();
					}
				});

		selecRegistro.show();
	}

	private void guardarMultasSistDiscapacitado() {

		if (comprobarGuardarValido()) {
			// El formulario es valido, por lo tanto podemos guardar
			boolean bienHecho = false;
			try {
				codigoMulta = cajaCodigoMulta.getText().toString();
				descripcionMulta = botonCargarTipoMulta.getText().toString();
				nombreCliente = cajaNombreCliente.getText().toString();
				montoMulta = etiquetaMontoMulta.getText().toString();
				crearBBDD();
				String razon = "Ausencia de tarjeta";
				miBBDDHelper.abrirBaseDatos();
				idMultaM = miBBDDHelper.traerIdMulta(razon);
				miBBDDHelper.close();
				try {
					registroMulta = new RegistroMulta();
					registroMulta.setNombreControlador(nombreControladorDiscapacitado);
					registroMulta.setNombreZona(nombreZonaDiscapacitado);
					registroMulta
							.setIdSubCalle(Integer.parseInt(idSubCalleDiscapacitado));
					registroMulta.setNumeroEspacio(numeroEspacioDiscapacitado);
					registroMulta.setFecha(fechaDiscapacitado);
					registroMulta.setHora(horaControlDiscapacitado);
					registroMulta.setPlaca(placaDiscapacitado);
					registroMulta.setCodigo(codigoMulta);
					registroMulta.setNombreInfractor(nombreCliente);
					registroMulta.setInfraccion(descripcionMulta);
					registroMulta.setIdMultaServidor(Integer
							.parseInt(idServidor));
					registroMulta.setMonto(Double.parseDouble(montoMulta));

					registroMulta.setColor(colorDiscapacitado);
					registroMulta.setMarca(marcaDiscapacitado);
					GestorBaseDatos manejadorMac = new GestorBaseDatos(RegistrarMulta.this);
					try {
						manejadorMac.abrirBaseDatos();
						mac=manejadorMac.obtenerMac();
						manejadorMac.close();
					} catch (Exception e) {
						
					}
					String valor = "";
					ComunicacionTCP comunicacion = new ComunicacionTCP();
					valor = comunicacion.gestionarConexionEnviarMulta(registroMulta,mac);
					if (valor.compareToIgnoreCase("e") == 0) {
						mostrarMensaje("Algo ha ido mal, en la comunicación. Los datos se guardaron localmente para su posterior sicronización");
						registroMulta.setEstadoEnvio(0);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						miBBDDHelper.close();
						try {
							GestorBaseDatos manejador = new GestorBaseDatos(
									RegistrarMulta.this);
							manejador.abrirBaseDatos();
							manejador
									.eliminarRegistroTarjeta(espacioTipoTiempo);
							manejador.close();
						} catch (Exception e) {
							// TODO: handle exception
						}
						ZonaTrabajo1
								.detenerServicioDetalleVehiculo(espacioTipoTiempo);

						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("1") == 0) {
						mostrarMensaje("Los datos se enviaron correctamente");
						miBBDDHelper.abrirBaseDatos();
						registroMulta.setEstadoEnvio(1);
						bienHecho = miBBDDHelper.insertarMulta(registroMulta);
						try {
							GestorBaseDatos manejador = new GestorBaseDatos(
									RegistrarMulta.this);
							manejador.abrirBaseDatos();
							manejador
									.eliminarRegistroTarjeta(espacioTipoTiempo);
							manejador.close();
						} catch (Exception e) {
							// TODO: handle exception
						}
						ZonaTrabajo1
								.detenerServicioDetalleVehiculo(espacioTipoTiempo);
						Intent aZonas = new Intent(RegistrarMulta.this,
								ZonasControl.class);
						startActivity(aZonas);
					}
					if (valor.compareToIgnoreCase("0") == 0) {
						mostrarMensaje("Revisar Código de Multa");
						menuCodigoIncorrecto(codigoMulta);
						// aumentar resaltacion
						cajaCodigoMulta.getBackground()
								.setColorFilter(R.drawable.caja_error,
										PorterDuff.Mode.MULTIPLY);

					}
				} catch (Exception e) {
					// TODO: handle exception
				}

			} catch (Exception ex) {
				// Algo ha ido mal, capturamos la excepcion
				bienHecho = false;
			}

			codigoMulta = "";
			descripcionMulta = "";
			nombreCliente = "";
			montoMulta = "";
			if (!bienHecho)
				mostrarMensaje("Los datos no se han guardado.");
		} else {
			mostrarMensaje("Rellena todos los campos antes de guardar.");
		}
	}

	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 0) {
			if (resultCode == RESULT_OK) {
				String contenido = data.getStringExtra("SCAN_RESULT");
				String formato = data.getStringExtra("SCAN_RESULT_FORMAT");
				Toast.makeText(getApplicationContext(), contenido + formato,
						Toast.LENGTH_LONG).show();
				cajaCodigoMulta.setText(contenido);
				cajaCodigoMulta.setEnabled(false);
				//

				if (data != null) {
					/**
					 * En el caso de una vista previa, obtenemos el extra data
					 * del intent y lo mostramos en el ImageView
					 */
					if (data.hasExtra("data")) {

						/**
						 * Para guardar la imagen en la galeria, utilizamos una
						 * conexion a un MediaScanner
						 */

						if (!photoPath.equals("") && (photoPath != null)) {
							Toast.makeText(getBaseContext(),
									"Guardado" + photoPath, Toast.LENGTH_LONG)
									.show();
						}
					}
					/**
					 * De lo contrario es una imagen completa
					 */
				}
			} else if (resultCode == RESULT_CANCELED) {
				// Si se cancelo la captura.
			}
		}
	}

	/**
	 * Muestra un diálogo de confirmación en el envío de información
	 */
	private void confirmacionInformacionEnvioMulta() {
		AlertDialog selecRegistro = new AlertDialog.Builder(RegistrarMulta.this)
				.create();
		selecRegistro.setTitle("Información");
		selecRegistro.setMessage("Está seguro de continuar: ");

		selecRegistro.setButton("Continuar",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						try {
							if (descripcionInformacion
									.compareTo("multaTarjeta") == 0) {
								guardarMultasSistMulta();

							}
						} catch (Exception e) {
							// TODO: handle exception
						}
						try {
							if (cControlador.compareTo("MultaControlador") == 0) {

								guardarMultaControlador();
							}
						} catch (Exception e) {
							// TODO: handle exception
						}
						/*
						 * try { if (rMultaSistTarjeta
						 * .compareTo("multaTarjetaRecarga") == 0) {
						 * guardarMultasSistAusenciaTarjeta();
						 * 
						 * } } catch (Exception e) { // TODO: handle exception }
						 */
						try {
							if (tipoMultaTiempo.compareTo("TipoMultaTiempo") == 0) {

								guardarMultasSistTiempo();

							}
						} catch (Exception e) {
							// TODO: handle exception
						}
						try {
							if (multaSistemaDiscapacitado
									.compareTo("multaTarjetaDiscapacitado") == 0) {

								guardarMultasSistDiscapacitado();

							}
						} catch (Exception e) {
							// TODO: handle exception
						}
					}
				});
		selecRegistro.setButton2("Revisar datos",
				new DialogInterface.OnClickListener() {
					boolean bienHecho = false;

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
					}
				});
		selecRegistro.show();
	}

	private int selected = 0;
	private int buffKey = 0; // add buffer value
	/**
	 * Muestra un diálogo de tipos de infraciones
	 */
	private void dialogoTiposInfracion() {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Seleccione el tipo de infración");
		final CharSequence[] tiposMulta = obtenerTipoMulta();
		builder.setSingleChoiceItems(tiposMulta, selected,
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						buffKey = which;
					}
				})
				.setCancelable(false)
				.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						selected = buffKey;
						botonCargarTipoMulta.setText(tiposMulta[buffKey]);
						try {
							GestorBaseDatos consulta = new GestorBaseDatos(
									RegistrarMulta.this);
							String razon = (String) tiposMulta[buffKey];
							String monto;
							consulta.abrirBaseDatos();

							monto = consulta.traerValorMonto(razon);
							etiquetaMontoMulta.setText(monto);
							consulta.close();
						} catch (Exception e) {
							// TODO: handle exception }
						}
						obtenerTipoMulta();
					}
				})
				.setNegativeButton("Cancelar",
						new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog,
									int which) {
							}
						});
		AlertDialog alert = builder.create();
		alert.show();
	}
/**
 * Consulta los tipos de infracciones 
 * @return CharSequence[] retorna el arreglo de tipos de infracción
 */
	private CharSequence[] obtenerTipoMulta() {
	
		ArrayList<String> tiposMulta;
		// String [] arregloTiposMulta;
		ArrayList<String> tiposMultaUsuario=new ArrayList<String>();
		CharSequence[] arregloTiposMulta;
		GestorBaseDatos obtener = new GestorBaseDatos(RegistrarMulta.this);
		obtener.abrirBaseDatos();
		tiposMulta = obtener.consultarTipoMulta();
		obtener.close();
		for(int i=0; i<tiposMulta.size();i++){
			String comprobar = tiposMulta.get(i);
			if(comprobar.contains("recarga")==false){
				tiposMultaUsuario.add(comprobar);
			}
		}
		//arregloTiposMulta = new CharSequence[tiposMulta.size()];
		arregloTiposMulta = new CharSequence[tiposMultaUsuario.size()];
		for (int i = 0; i < tiposMultaUsuario.size(); i++) {
			arregloTiposMulta[i] = tiposMultaUsuario.get(i);
		}
		return arregloTiposMulta;
	}
	/**
	 * Carga los tipos de multa sobre la interfaz
	 */
	public void cargarMultas() {
		try {
			Bundle multaAusenciaTarjetaDiscapacitado = getIntent().getExtras();
			multaSistemaDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoMultaSistDiscapacitado");
			nombreControladorDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoNomControladorRecarga");
			nombreZonaDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoNombreZonaRecarga");
			numeroEspacioDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getInt("datoEspacioRegistroRecarga");
			idSubCalleDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoIdSubCalleRecarga");
			placaDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoPlacaRecarga");
			colorDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoColorRecarga");
			marcaDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoMarcaRecarga");
			horaControlDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoHoraControlRecarga");
			fechaDiscapacitado = multaAusenciaTarjetaDiscapacitado
					.getString("datoFechaControlRecarga");
			System.out.println(multaSistemaDiscapacitado + nombreControladorDiscapacitado
					+ idMultaAusenciaRegistroDiscapacitado + nombreZonaDiscapacitado + numeroEspacioDiscapacitado
					+ idSubCalleDiscapacitado + placaDiscapacitado + colorDiscapacitado + marcaDiscapacitado
					+ horaControlDiscapacitado + fechaDiscapacitado);
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {// por cadicidad
			Bundle datosTarjeta = getIntent().getExtras();
			descripcionInformacion = datosTarjeta
					.getString("datoMultaSistTarjeta");
			nombreControladorInformacion = datosTarjeta
					.getString("datoNomControlador");
			datosTarjeta.getInt("datoIdMultaCaducidad");
			nombreZonaInformacion = datosTarjeta.getString("datoNombreZona");
			numeroEspacioRegistroSistema = datosTarjeta.getInt("datoEspacioRegistro");
			idSubCalleInformacion = datosTarjeta.getString("datoIdSubCalle");
			placaInformacion = datosTarjeta.getString("datoPlaca");
			colorInformacion = datosTarjeta.getString("datoColor");
			marcaInformacion = datosTarjeta.getString("datoMarca");
			horaControlInformacion = datosTarjeta.getString("datoHoraControl");
			fechaInformacion = datosTarjeta.getString("datoFechaControl");

		} catch (Exception e) {
			// TODO: handle exceptions
		}
		try {
			Bundle Controlador_Multa = getIntent().getExtras();
			cUsuario = Controlador_Multa.getString("datoUsuario");
			cNumZona = Controlador_Multa.getString("datoNombreZona");
			cIdSubcalle = Controlador_Multa.getString("datoIdSubCalle");
			cNunEspacio = Controlador_Multa.getInt("datoNumeroespacio");
			cPlaca = Controlador_Multa.getString("datoplaca");
			cColor = Controlador_Multa.getString("datocolor");
			cMarca = Controlador_Multa.getString("datomarca");
			cHoraControl = Controlador_Multa.getString("datohoraControl");
			cFecha = Controlador_Multa.getString("datofechacontrol");
			cControlador = Controlador_Multa.getString("Controlador");
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			Bundle multaPorTiempo = getIntent().getExtras();
			espacioTipoTiempo = multaPorTiempo.getInt("espacio");
			registroTipoMulta = multaPorTiempo.getString("tipoRe");
			multaTipoMulta = multaPorTiempo.getString("multaT");
			tipoMultaTiempo = multaPorTiempo.getString("TipoMultaTiempo");
		} catch (Exception e) {
			// TODO: handle exception
		}

		try {

			if (tipoMultaTiempo.compareTo("TipoMultaTiempo") == 0) {
				Toast.makeText(
						getApplicationContext(),
						" " + espacioTipoTiempo + " " + registroTipoMulta
								+ "  " + multaTipoMulta + "x" + tipoMultaTiempo,
						Toast.LENGTH_LONG).show();
				GestorBaseDatos g = new GestorBaseDatos(RegistrarMulta.this);
				g.abrirBaseDatos();
				int intervalo = Integer.parseInt(multaTipoMulta);
				Toast.makeText(getApplicationContext(), intervalo + "",
						Toast.LENGTH_LONG).show();
				String montoMulta = g.consultarMonto(intervalo);
				idServidor = g.consultarIdServidor(intervalo);
				String descripcionMulta = g.consultarDescrip(intervalo);
				g.close();
				Toast.makeText(
						getApplicationContext(),
						descripcionMulta+ "   "+montoMulta+"intervalo"+intervalo,
						Toast.LENGTH_LONG).show();
				botonCargarTipoMulta.setText(descripcionMulta);
				botonCargarTipoMulta.setClickable(false);
				etiquetaMontoMulta.setText(montoMulta);

			}

		} catch (Exception e) {
			// TODO: handle exception
		}
		try {

			// multa de tarjeta por caducidad
			if (descripcionInformacion.compareTo("multaTarjeta") == 0) {
				GestorBaseDatos mostrar = new GestorBaseDatos(
						RegistrarMulta.this);
				mostrar.abrirBaseDatos();
				String ID = "";
				//long IdMulta;
				int IdMulta;
				String razon = "Uso indebido de tarjeta";
				ID = mostrar.traerIdMulta(razon);
				Toast.makeText(getBaseContext(),
						ID + "entro a multa por caducidad", Toast.LENGTH_LONG)
						.show();

				//IdMulta = Long.parseLong(ID);
				IdMulta = Integer.parseInt(ID);
				mostrar
						.obtenerRazonTipoMultaCaducidad(IdMulta);
				mostrar.close();
				botonCargarTipoMulta.setText("Uso Indebido de Tarjeta");
				botonCargarTipoMulta.setClickable(false);
				GestorBaseDatos mostrar2 = new GestorBaseDatos(
						RegistrarMulta.this);
				mostrar2.abrirBaseDatos();
				montoMultaCaducidad = mostrar2
						.obtenerValorTipoMultaCaducidad(IdMulta);
				mostrar2.close();
				etiquetaMontoMulta.setText(montoMultaCaducidad);
				botonCargarTipoMulta.setTypeface(tipofuenteMulta);
				etiquetaMontoMulta.setClickable(false);

			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			if (cControlador.compareTo("MultaControlador") == 0) {
				Toast.makeText(getBaseContext(), "Selecione el tipo de Multa",
						Toast.LENGTH_LONG).show();
			} else {

			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			if (multaSistemaDiscapacitado
					.compareTo("multaTarjetaDiscapacitado") == 0) {
				GestorBaseDatos mostrar = new GestorBaseDatos(
						RegistrarMulta.this);
				mostrar.abrirBaseDatos();
				// int x=0;
				// x=Integer.parseInt(idMultaCaducidad);
				String ID = "";
				long IdMulta;
				long prueba;
				String razon = "Ausencia de tarjeta";
				// prueba=Long.parseLong(razon);
				ID = mostrar.traerIdMulta(razon);
				Toast.makeText(getBaseContext(), ID + "entro",
						Toast.LENGTH_LONG).show();
				mostrar.close();
				IdMulta = Long.parseLong(ID);
				botonCargarTipoMulta.setText("Ausencia de tarjeta");
				botonCargarTipoMulta.setClickable(false);
				GestorBaseDatos mostrar2 = new GestorBaseDatos(
						RegistrarMulta.this);
				mostrar2.abrirBaseDatos();
				montoMultaCaducidad = mostrar2
						.obtenerValorTipoMultaCaducidad(IdMulta);
				mostrar2.close();
				//Toast.makeText(getBaseContext(), montoMultaCaducidad + "entro",
				//		Toast.LENGTH_LONG).show();
				etiquetaMontoMulta.setText(montoMultaCaducidad);

			}
		} catch (Exception e) {
			// TODO: handle exception
		}

	}
}